﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string exit = "N";
            do
            {
                Console.Clear();
                Console.WriteLine("1-добавление 10");
                Console.WriteLine("2-сумма ряда");
                Console.WriteLine("3-расстояние между точками");
                Console.WriteLine("4-к какой четверти принадлежит точка");
                Console.WriteLine("5-нарисовать рамку");
                Console.WriteLine("6-массив случайных чисел");
                Console.WriteLine("7-массив случайных чисел. Подсчёт чётных и нечётных.");
                Console.WriteLine("8-массив случайных чисел. Подсчёт повторений, min,max.");
                string choice = Console.ReadLine();
                switch (choice)
                {
                    case ("1"):
                        { AddTen(); }
                        break;
                    case ("2"):
                        { SumOf(); }
                        break;
                    case ("3"):
                        { Distance(); }
                        break;
                    case ("4"):
                        { FindQuarter(); }
                        break;
                    case ("6"):
                        {
                            Console.WriteLine("введите количество элементов массива");
                            RandomArray(Int32.Parse(Console.ReadLine()));
                        }
                        break;
                    case ("5"):
                        {
                            Console.WriteLine("введите высоту рамки");
                            int height = Int32.Parse(Console.ReadLine());
                            Console.WriteLine("введите ширину рамки");
                            int width = Int32.Parse(Console.ReadLine());
                            Console.WriteLine("введите символ");
                            string symbol = Console.ReadLine();
                            FrameDrawer(height, width, symbol);
                        } break;

                    case ("7"):
                        {
                            CountEvenOdd();
                        }
                        break;
                    case ("8"):
                        {
                            MinMaxRepeat();
                        }
                        break;



                    default:
                        { Console.WriteLine("неверный ввод"); }
                        break;
                }

                Console.ReadKey();
            }
            while (exit == "N");
        }

        static void AddTen()
        {
            Console.WriteLine("введите число");
            int number;
            bool success = Int32.TryParse(Console.ReadLine(), out number);
            if (success) Console.WriteLine(10 + number);
            else Console.WriteLine("неверный ввод");

        }

        static void SumOf()
        {
            Console.WriteLine("введите целое положительное число");
            int input;
            int sum=0;
            bool success = Int32.TryParse(Console.ReadLine(), out input);
            if (success)
            {
                if (input < 0) Console.WriteLine("число отрицательное, попробуйте ещё раз");
                else
                {
                    for (; input > 0; input--)
                    { sum += input; }
                    Console.WriteLine(sum);
                }
            }
            else Console.WriteLine("это не целое число");
        }

        static void Distance()
        {
            Console.Clear();
            Console.WriteLine("введите координаты первой точки");
            Console.Write("X:");
            int x1 = Int32.Parse(Console.ReadLine());
            Console.Write("Y:");
            int y1 = Int32.Parse(Console.ReadLine());
            Console.Clear();
            Console.WriteLine("введите координаты второй точки");
            Console.Write("X:");
            int x2 = Int32.Parse(Console.ReadLine());
            Console.Write("Y:");
            int y2 = Int32.Parse(Console.ReadLine());
            double distance = Math.Sqrt(Math.Pow((x2 - x1), 2) + Math.Pow((y2 - y1), 2));
            Console.Clear();
            Console.WriteLine(distance);

        }

        static void FindQuarter()
        {
            Console.Clear();
            Console.WriteLine("введите координаты точки");
            Console.Write("X:");
            int x = Int32.Parse(Console.ReadLine());
            Console.Write("Y:");
            int y = Int32.Parse(Console.ReadLine());
            if ((x > 0) && (y > 0)) Console.WriteLine("точка принадлежит 1 четверти");
            else if ((x > 0) && (y < 0)) Console.WriteLine("точка принадлежит 4 четверти");
            else if ((x < 0) && (y > 0)) Console.WriteLine("точка принадлежит 2 четверти");
            else if ((x < 0) && (y < 0)) Console.WriteLine("точка принадлежит 3 четверти");
            else if ((x == 0) && (y == 0)) Console.WriteLine("точка находится в начале осей координат");
        }

        static void FrameDrawer(int height, int width, string symbol)
        {
            Console.Clear();
            for (int i = 1; i <= height; i++)
            {
                for (int j = 1; j <= width; j++)
                {
                    if (i == 1 || i == height)
                    Console.Write(symbol+" ");
                    else if (j == 1 || j==width)
                    Console.Write(symbol+" ");
                    else Console.Write("  ");

                }
                Console.WriteLine("\n");
            }
            Console.ReadKey();
        }

        static int[] RandomArray(int arraySize)
        {
            Console.Clear();
            Random rnd = new Random();
            int number;
            int[] randomArr = new int[arraySize];
            for (int i=0;i<randomArr.Length;i++)
            {
                number = rnd.Next(1, 1001);
                randomArr[i] = number;
                Console.Write(number+" ");
            }           
            return randomArr;
        }

        static void CountEvenOdd()
        {
            Console.Clear();
            int[] newArr = RandomArray(5);
            int evenCounter = 0;
            int oddCounter = 0;
            foreach (var item in newArr )
            {
                if (item % 2 == 0) evenCounter++;
                else oddCounter++;
            }
            Console.WriteLine("чётных: {0}, нечётных: {1}.", evenCounter, oddCounter);
            Console.ReadKey();
        }

        static void MinMaxRepeat()
        {
            Console.Clear();
            int minValue = Int32.MaxValue;
            int maxvalue = Int32.MinValue;
            int[] newArr = RandomArray(10);
            int positionMax = 0;
            int positionMin = 0;
            int counter = 0;
            foreach (var item in newArr)
            {
                counter++;
                if (item > maxvalue)
                {
                    positionMax=counter;
                    maxvalue = item;
                }
                if (item < minValue)
                {
                    positionMin = counter;
                    minValue = item;
                }

            }
            Console.WriteLine("\n min: {0} \n max: {1}", minValue, maxvalue);
            Console.WriteLine("минимальный элемент под номером {0}", positionMin);
            Console.WriteLine("максимальный элемент под номером {0}", positionMax);
            int nubmerOfMin = 0;
            int nubmerOfMax = 0;
            foreach (var item in newArr)
            {
                if (item == minValue) nubmerOfMin++;
                if (item == maxvalue) nubmerOfMax++;
            }
            Console.WriteLine("максимальный элемент встречается {0} раз", nubmerOfMax);
            Console.WriteLine("минимальный элемент встречается {0} раз", nubmerOfMin);
        }
    }
}
